Customers seeking to host and execute applications and web services often utilize networks of computers and storage resources provided by computing resource service providers. However, it becomes challenging to design computer applications in such a way as to optimize their latency and scalability when deployed to distributed systems. For example, application packages deployed to the same host can restrict scalability of that application, while application packages distributed to a highly distributed system can impact application latency. Moreover, manually specifying which components of an application should run on which elements of a distributed system requires considerable technical ability and can be repetitious, time-consuming, and tedious. Further, a considerable amount of re-engineering may be involved, should the component distribution be changed. Consequently, a need exists for an automated process for application deployment on distributed systems that provides a balance of latency and scalability.